// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1

Rectangle {
    opacity: 0

    property int charId: -1
    property real fieldWidth: 480
    property real fieldHeight: 480

    property int scorepoint: 0      // 点数
    property int hitpoint: 1        // あたって耐えれる回数（０になったら消える）
    property real ratio: 1.0        // 難易度調整の変化率（小さいほうが簡単）
    property bool isDestory: false  // 削除要求フラグ

    property int shotCountInFrame: 0    // 1フレームに撃つ弾の数のカウンタ（ダウンカウンタ）
    property int shotCountMaxInFrame: 1 // 1フレームに撃つ弾の数の最大

    property int tickCount: 0   // 24bit

    signal hited
    signal destorying

    // tickCountをカウントする。
    function incrementTickCount(){
        // 打てる数をクリア
        shotCountInFrame = shotCountMaxInFrame;

        tickCount++;
        if(tickCount > 0xffffff){
            tickCount = 0;
        }
    }

    function isOutOfField(){
        var is = false;
        if(x >= fieldWidth){
            is = true;
        }else if(y >= fieldHeight){
            is = true;
        }else if((x + width) <= 0){
            is = true;
        }else if((y + height) <= 0){
            is = true;
        }
        return is;
    }

    // あたりか判定
    function checkHit(tx, ty, tw, th){
        var is = false;
        var pointX = [tx, tx + tw];
        var pointY = [ty, ty + th];
        if(hitpoint > 0){
            for(var i=0; i<pointX.length; i++){
                if((pointX[i] >= x)
                        && (pointX[i] <= (x + width))
                        && (pointY[i] >= y)
                        && (pointY[i] <= (y + height))){
                    is = true;
                }
            }
            if(!is){
                // 自分の中にいなかったら相手の中にいるか判定
                pointX[0] = x;
                pointX[1] = x + width;
                pointY[0] = y;
                pointY[1] = y + height;
                for(i=0; i<pointX.length; i++){
                    if((pointX[i] >= tx)
                            && (pointX[i] <= (tx + tw))
                            && (pointY[i] >= ty)
                            && (pointY[i] <= (ty + th))){
                        is = true;
                    }
                }
            }
        }
        return is;
    }

    // あたった後の処理
    function hit(){
        var score = 0;
        hitpoint--;
        if(hitpoint < 0){
        }else if(hitpoint === 0){
            isDestory = true;
            score = scorepoint ;// / tickCount;
            destorying();
        }else{
            // 弾があたったときの処理
            hited();
        }

        return score;
    }

    // アニメーション制御
    function resumeAnimation(){
    }
    function pauseAnimation(){
    }

}
